package com.hehe.conversion.hehemiddleware.model.resp.bill;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

@Data
public class GeneralDetails {
    @JsonProperty("code")
    private String code; // 发票代码

    @JsonProperty("number")
    private String number; // 发票号码

    @JsonProperty("date")
    private String date; // 开票日期

    @JsonProperty("time")
    private String time; // 时间

    @JsonProperty("check_code")
    private String checkCode; // 校验码

    @JsonProperty("category")
    private String category; // 种类（oil 表示是加油票）

    @JsonProperty("pretax_amount")
    private String pretaxAmount; // 税前金额合计

    @JsonProperty("tax")
    private String tax; // 税额合计

    @JsonProperty("total")
    private String total; // 价税合计（小写）

    @JsonProperty("total_cn")
    private String totalCn; // 价税合计（大写）

    @JsonProperty("seller")
    private String seller; // 销售方名称

    @JsonProperty("seller_tax_id")
    private String sellerTaxId; // 销售方纳税人识别号

    @JsonProperty("buyer")
    private String buyer; // 购买方名称

    @JsonProperty("buyer_tax_id")
    private String buyerTaxId; // 购买方纳税人识别号

    @JsonProperty("kind")
    private String kind; // 发票消费类型

    @JsonProperty("province")
    private String province; // 省

    @JsonProperty("city")
    private String city; // 市

    @JsonProperty("seller_addr_tel")
    private String sellerAddrTel; // 销售方地址、电话

    @JsonProperty("seller_bank_account")
    private String sellerBankAccount; // 销售方开户行及账号

    @JsonProperty("buyer_bank_account")
    private String buyerBankAccount; // 购买方开户行及账号

    @JsonProperty("buyer_addr_tel")
    private String buyerAddrTel; // 购买方地址、电话

    @JsonProperty("company_seal")
    private String companySeal; // 是否有公司印章（0：没有； 1： 有）

    @JsonProperty("electronic_mark")
    private String electronicMark; // 是否为电子发票

    @JsonProperty("title")
    private String title; // 标题

    @JsonProperty("transit_mark")
    private String transitMark; // 通行费标志

    @JsonProperty("remark")
    private String remark; // 备注

    @JsonProperty("producer_stamp")
    private String producerStamp; // 监制章

    @JsonProperty("items")
    private List<Item> items; // 发票项目列表

    @Data
    public static class Item {
        @JsonProperty("name")
        private String name; // 货物或应税劳务、服务名称

        @JsonProperty("unit")
        private String unit; // 单位

        @JsonProperty("quantity")
        private String quantity; // 数量

        @JsonProperty("specification")
        private String specification; // 规格型号

        @JsonProperty("total")
        private String total; // 金额

        @JsonProperty("tax_rate")
        private String taxRate; // 税率

        @JsonProperty("price")
        private String price; // 单价

        @JsonProperty("tax")
        private String tax; // 税额
        // Getters and Setters
    }
}
